using System;
using System.Collections.Generic;
using System.Linq;
using M0;
using M1;
using UnityEngine;
using UnityEngine.UI;

public class 对话窗口View : BaseWindow
{
    [SerializeField] private Text 左边名字;
    [SerializeField] private Text 右边名字;
    [SerializeField] private Text 对话内容;

    private List<对白数据Data> 数据;
    private int curId;
    public void SetUpDialog(int id)
    {
        数据 = 对白数据.Instance.Get对白(id);
        curId = 0;
        对话管理器.Instance.开启对白();
        执行对白(数据[curId]);
        curId++;
    }

    private void 执行对白(对白数据Data data)
    {
        var info = data.说话者.Split(';');
        (bool, bool) 两边说话者 = (info[1]=="1",info[2]=="1");
        var 第一句 = data;
        var 左边 = Get说话者(第一句.左边, 第一句.左边皮肤, 第一句.左边装饰);
        var 右边 = Get说话者(第一句.右边, 第一句.右边皮肤, 第一句.右边装饰);

        
        左边名字.transform.parent.gameObject.SetActive(两边说话者.Item1);
        右边名字.transform.parent.gameObject.SetActive(两边说话者.Item2);
        左边名字.text = CheckName(data.左边名字,data.左边);
        右边名字.text = CheckName(data.右边名字,data.右边);
        对话内容.text = data.对话内容;
        
        对话管理器.Instance.SetUp(info[0],两边说话者,左边,右边);
    }

    private string CheckName(string name,int id)
    {
        if (id == 999)
        {
            return 二合小镇.Instance.GetUser.name;
        }
        else
        {
            return name;
        }
    }

    public void 点击下一句()
    {
        if (数据.Count <= curId)
        {
            int 对白id = 数据[0].DialogId;
            数据 = null;
            curId = 0;
            对话管理器.Instance.关闭对话();
            CloseWindow();
            M.Event.DoEvent<int>(完成任务条件.对白完成.ToString(),对白id);
            
        }
        else
        {
            执行对白(数据[curId]);
            curId++;
        }
    }

    private 对话Setup所需 Get说话者(int sex,int 皮肤,int 装饰)
    {
        return M二合小镇.Get说话者(sex, 皮肤, 装饰);
    }
}
